home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / PNL Libraries / MySystemGlobals.p < prev    next >
Encoding:
Text File  |  1995-10-23  |  2.6 KB  |  93 lines  |  [TEXT/CWIE]

  1. unit MySystemGlobals;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Quickdraw, Files;
  7.  
  8.     var  { set up by InitSystemGlobals }
  9.         system7: boolean;
  10.         system_version: longint;
  11.         has_appleEvents: boolean;
  12.         has_findfolder: boolean;
  13.         has_aliasMgr: boolean;
  14.         has_newStdFile: boolean;
  15.         has_HelpMgr: boolean;
  16.         has_colorQD: boolean;
  17.         has_LaunchControl: Boolean;
  18.         app_resfile: integer;
  19.         app_fs: FSSpec;
  20.         in_foreground: boolean;
  21.  
  22.     procedure InitSystemGlobals;
  23.     function RefNumToFSSpec(rn:integer; var fs:FSSpec):OSErr;
  24.     procedure SetInForeground (fore: boolean);
  25.     function InForeground: boolean;
  26.     
  27. implementation
  28.  
  29.     uses
  30.         Resources, GestaltEqu, Processes;
  31.         
  32.     function TPbtst(value:longint; bit:integer):Boolean;
  33.     begin
  34.         TPbtst := btst(value, bit);
  35.     end;
  36.     
  37.     procedure SetInForeground (fore: boolean);
  38.     begin
  39.         in_foreground := fore;
  40.     end;
  41.  
  42.     function InForeground: boolean;
  43.         var
  44.             gv: longint;
  45.             ourpsn, frontpsn: ProcessSerialNumber;
  46.             front: boolean;
  47.     begin
  48.         if (Gestalt(gestaltOSAttr, gv) = noErr) & (TPbtst(gv, gestaltLaunchControl)) then begin
  49.             if (GetCurrentProcess(ourpsn) = noErr) & (GetFrontProcess(frontpsn) = noErr) then begin
  50.                 if SameProcess(ourpsn, frontpsn, front) = noErr then begin
  51.                     in_foreground := front;
  52.                 end;
  53.             end;
  54.         end;
  55.         InForeground := in_foreground;
  56.     end;
  57.  
  58.     function RefNumToFSSpec(rn:integer; var fs:FSSpec):OSErr;
  59.         var
  60.             pb: FCBPBRec;
  61.     begin
  62.         pb.ioNamePtr := @fs.name;
  63.         pb.ioVRefNum := 0;
  64.         pb.ioRefNum := rn;
  65.         pb.ioFCBIndx := 0;
  66.         RefNumToFSSpec := PBGetFCBInfoSync(@pb);
  67.         fs.vRefNum := pb.ioFCBVRefNum;
  68.         fs.parID := pb.ioFCBParID;
  69.     end;
  70.     
  71.     procedure InitSystemGlobals;
  72.         var
  73.             oe: OSErr;
  74.             gv: longint;
  75.             sysenv: sysEnvRec;
  76.     begin
  77.         app_resfile := CurResFile;
  78.         oe := RefNumToFSSpec(app_resfile, app_fs);
  79.         has_colorqd := (SysEnvirons(1, sysEnv) = noErr) & sysenv.hasColorQD; { Gestalt has a bug that causes hasColourQD to always be set }
  80.         if (Gestalt(gestaltSystemVersion, system_version) <> noErr) then begin
  81.             system_version := $0600;
  82.         end;
  83.         system7 := system_version >= $0700;
  84.         has_AppleEvents := (Gestalt(gestaltAppleEventsAttr, gv) = noErr) & (TPbtst(gv, gestaltAppleEventsPresent));
  85.         has_findfolder := (Gestalt(gestaltFindFolderAttr, gv) = noErr) & (TPbtst(gv, gestaltFindFolderPresent));
  86.         has_newStdFile := (Gestalt(gestaltStandardFileAttr, gv) = noErr) & (TPbtst(gv, gestaltStandardFile58));
  87.         has_HelpMgr := (Gestalt(gestaltHelpMgrAttr, gv) = noErr) & (TPbtst(gv, gestaltHelpMgrPresent));
  88.         has_aliasMgr := (Gestalt(gestaltAliasMgrAttr, gv) = noErr) & (TPbtst(gv, gestaltAliasMgrPresent));
  89.         has_LaunchControl := (Gestalt(gestaltOSAttr, gv) = noErr) & (TPbtst(gv, gestaltLaunchControl));
  90.         in_foreground := true;
  91.     end;
  92.  
  93. end.